The present invention relates to computing systems and in particular to a method for tracking the execution of a computer program during execution thereof and detection of unintended behavior.
Prior art computing systems mainly consist of an execution engine, program or code memory, data memory, and other functional parts. The execution engine sequentially reads instruction codes (and instruction code arguments) from the code memory. The data memory is used to store variable and constant data. It is accessed (i.e., read from and written to) by special instruction codes. In conventional computing systems, the content of code memory and data memory form the actual computer program.
Additionally, there are today interpreter based computing systems. In this case the data memory contains virtual instruction codes, and data of the program. The virtual instruction codes cannot be executed by the execution engine. An interpreter is used instead, which reads virtual instructions and their arguments from the data memory, and executes them according to the rules, which are stored in the interpreter itself. One example of such an interpreter is the Java Virtual Machine.
In conventional or interpreter based computing systems, computer programs consist of instructions that are executed in sequence. It is expected that this sequence follows the programmed path; branching is expected to happen only as programmed in dependency of known events and data.
Unfortunately, the microprocessor that executes the instructions can be disturbed, e.g. through electromagnetic fields, X-ray, laser light, or by fast changes in the electrical system powering the device, in a way that can lead to execution of code outside the intended/programmed flow of the execution path. This gives attackers the possibility to manipulate program execution in a way that a program path is followed that was not intended by the programmer, or that the program operates with wrong data. Especially in sensitive computing areas where security is of high importance, such disturbances and manipulations can cause great damage.